home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Divestiture / Source / tear.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-23  |  817 b   |  49 lines

  1. #include    "tear.h"
  2.  
  3. RgnHandle    gTearRgn;
  4.  
  5. OSErr    PrepareTearRgn(void)
  6. {
  7.     OSErr    err = noErr;
  8.     
  9.     PicHandle    pict = GetPicture(128);
  10.     
  11.     if (pict != nil)
  12.     {
  13.         BitMap        bits;
  14.         Rect        r;
  15.  
  16.         r = (**pict).picFrame;
  17.         
  18.         bits.bounds = r;
  19.         bits.rowBytes = (((r.right - r.left) + 15) / 16) * 2;
  20.         bits.baseAddr = NewPtrClear((long)bits.rowBytes * (long)(r.bottom - r.top));
  21.         
  22.         if (bits.baseAddr != nil)
  23.         {
  24.             GrafPort    port;
  25.             GrafPtr        save_port;
  26.             
  27.             GetPort(&save_port);
  28.             OpenPort(&port);
  29.             SetPort(&port);
  30.                         
  31.             SetPortBits(&bits);
  32.             ClipRect(&r);
  33.             DrawPicture(pict, &r);
  34.             
  35.             gTearRgn = (RgnHandle)NewHandleSysClear(sizeof(Region));
  36.             err = BitMapToRegion(gTearRgn, &bits);
  37.             DisposePtr(bits.baseAddr);
  38.             
  39.             SetPort(save_port);
  40.         }
  41.         else
  42.             err = memFullErr;
  43.     }
  44.     else
  45.         err = memFullErr;
  46.         
  47.     return err;
  48. }
  49.